package com.sample.library.web;

import android.app.Activity;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.webkit.WebView;

import androidx.appcompat.app.AlertDialog;

import com.just.agentweb.AgentWebUIControllerImplBase;

/**
 * Created by cenxiaozhong on 2017/12/23.
 */

/**
 * 如果你需要修改某一个AgentWeb 内部的某一个弹窗 ，请看下面的例子
 * 注意写法一定要参照 DefaultUIController 的写法 ，因为UI自由定制，但是回调的方式是固定的，并且一定要回调。
 */
public class UIController extends AgentWebUIControllerImplBase {

    private final Activity mActivity;

    public UIController(Activity activity) {
        this.mActivity = activity;
    }

    @Override
    public void onShowMessage(String message, String from) {
        super.onShowMessage(message, from);
        Log.i(TAG, "message:" + message);
    }

    /**
     * 修改文件选择的弹窗
     */
    @Override
    public void onSelectItemsPrompt(WebView view, String mUrl, String[] ways, Handler.Callback callback) {
        //super.onSelectItemsPrompt(view,mUrl,ways,callback); //使用默认的UI 这行应该注释或者删除掉
        AlertDialog mAlertDialog = new AlertDialog.Builder(mActivity)//
                .setSingleChoiceItems(ways, -1, (dialog, which) -> {
                    dialog.dismiss();
                    if (callback != null) {
                        Message mMessage = Message.obtain();
                        mMessage.what = which;  //mMessage.what 必须等于ways的index
                        callback.handleMessage(mMessage); //最后callback一定要回调
                    }
                }).setOnCancelListener(dialog -> {
                    dialog.dismiss();
                    if (callback != null) {
                        //-1表示取消  //最后callback一定要回调
                        callback.handleMessage(Message.obtain(null, -1));
                    }
                }).create();
        mAlertDialog.show();
    }
}
